import request from '@/utils/request'

export default {
  /**
   * 获取会话列表
   * @param {Object} params - 查询参数
   * @param {number} [params.page=1] - 页码
   * @param {number} [params.page_size=20] - 每页数量
   */
  getConversations(params) {
    return request({
      url: '/user/conversations',
      method: 'get',
      params: {
        page: 1,
        page_size: 20,
        ...params
      }
    })
  },

  /**
   * 获取联系人列表（好友列表）
   * @param {Object} params - 查询参数
   * @param {number} [params.page=1] - 页码
   * @param {number} [params.page_size=20] - 每页数量
   */
  getContacts(params) {
    return request({
      url: '/user/contacts',
      method: 'get',
      params: {
        page: 1,
        page_size: 20,
        ...params
      }
    })
  },

  /**
   * 获取群聊列表
   * @param {Object} params - 查询参数
   * @param {number} [params.page=1] - 页码
   * @param {number} [params.page_size=20] - 每页数量
   */
  getGroups(params) {
    return request({
      url: '/group/list',
      method: 'get',
      params: {
        page: 1,
        page_size: 20,
        ...params
      }
    })
  },

  /**
   * 发送单聊消息
   * @param {Object} params - 消息参数
   * @param {number} params.receiver_id - 接收者ID
   * @param {number} params.content_type - 消息类型 (1:文本, 2:图片, 3:文件等)
   * @param {string} params.content - 消息内容
   * @param {number} params.receiver_type - 接收者类型 (1:单聊, 2:群聊)
   */
  sendMessage(params) {
    return request({
      url: '/message/send',
      method: 'post',
      data: {
        ...params,
      }
    })
  },

  /**
   * 获取聊天历史消息
   * @param {Object} params - 查询参数
   * @param {number} params.receiver_type - 接收者类型 (1:单聊, 2:群聊)
   * @param {number} params.receiver_id - 接收者ID或群组ID
   * @param {number} [params.page=1] - 页码
   * @param {number} [params.page_size=20] - 每页数量
   */
  getChatHistory(params) {
    return request({
      url: '/message/history',
      method: 'get',
      params: {
        page: 1,
        page_size: 20,
        ...params
      }
    })
  },

  /**
   * 搜索消息
   * @param {Object} params - 查询参数
   * @param {string} [params.keyword] - 消息内容关键词（模糊匹配）
   * @param {number} [params.start_time] - 开始时间戳（毫秒）
   * @param {number} [params.end_time] - 结束时间戳（毫秒）
   * @param {number} [params.page=1] - 页码
   * @param {number} [params.page_size=10] - 每页数量
   */
  searchMessages(params) {
    return request({
      url: '/chat/search',
      method: 'get',
      params: {
        page: 1,
        page_size: 10,
        ...params
      }
    })
  },

  /**
   * 标记单聊消息为已读
   * @param {Object} params - 参数
   * @param {number} params.receiver_id - 接收者ID
   */
  markPrivateMessageAsRead(params) {
    return request({
      url: '/message/read',
      method: 'post',
      data: params
    })
  },

  /**
   * 获取未读消息数量
   */
  getUnreadMessageCount() {
    return request({
      url: '/message/unread',
      method: 'get'
    })
  },

  /**
   * 标记群聊消息为已读
   * @param {Object} params - 参数
   * @param {string} params.message_id - 消息ID
   * @param {number} params.group_id - 群组ID
   */
  markGroupMessageAsRead(params) {
    return request({
      url: '/message/group-read',
      method: 'post',
      data: params
    })
  },

  /**
   * 撤回消息
   * @param {Object} params - 参数
   * @param {string} params.message_id - 要撤回的消息ID
   */
  revokeMessage(params) {
    return request({
      url: '/message/revoke',
      method: 'post',
      data: params
    })
  }
}